package com.daji.callback_and_lambda.callback_async_lambda;

/*
* 该案例是 callback_async的升级版！
* 使用了lambda表达式来“优雅地将一坨代码传入一个函数中”
* 对比学习，和 callback_async这个包下的代码对比一下，体会lambda的方便之处
* */
public class CallBackTest {
    public static void main(String[] args) throws InterruptedException {
        Server server = new Server();
        clientSendMsg(server,"Server,Hello~");
    }

    private static void clientSendMsg(Server server,String msg) throws InterruptedException {
        System.out.println("客户端：发送的消息为：" + msg);

        //lambda方式开线程
        new Thread(()->{
            //使用lambda的方式，将一坨代码(一个函数，一个函数式接口)传入另一个函数(getClientMsg)的形参中
            server.getClientMsg((status -> System.out.println("客户端：服务端回调状态为：" + status)),msg);
        }).start();

        System.out.println("客户端：异步发送成功");
        Thread.sleep(1 * 500);
        System.out.println("继续跑下面的流程");
        Thread.sleep(1 * 500);
        System.out.println("继续跑下面的流程");
        Thread.sleep(1 * 500);
        System.out.println("跑完了！");
    }
}
